package com.zdxc.service;


import java.util.List;
import java.util.Map;

import com.zdxc.entities.Templateinfo;
import common.dao.BaseMyBatisDAO;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import common.bean.Paging;



/**
 * 模板表管理模块Service接口实现
 *
 * @author liuxj
 * @version 1.0.0 2017-08-08
 */
@Lazy
@Service
public class TemplateService{
    @Autowired
    BaseMyBatisDAO baseMyBatisDAO;
    /** SQL的命名空间 */
    private static final String SQL_NS = "com.zdxc.dao.templateinfo.";

    /**
     * 根据分页条件查询模板表数据并分页
     *
     * @param templateinfo
     *            查询参数
     * @param paging
     *            分页参数
     * @return 分页数据
     */
    public Paging findTemplateByCondition(Templateinfo templateinfo, Paging paging) {
        paging.setStringParams(templateinfo);

        paging = baseMyBatisDAO.findForPageHelper(SQL_NS + "findTemplateByCondition", paging);

        return paging;
    }


    /**
     * 外部接口取数据
     * @param map
     * @return
     */
    public List<Templateinfo>  findTemplateRemoteByCondition(Map<String ,Object> map) {
        List<Templateinfo>  list = baseMyBatisDAO.findForList(SQL_NS + "findTemplateRemoteByCondition", map);
        return list;
    }


    /**
     * 新增模板表
     *
     * @param templateEntity
     *            模板表
     */
    public void addTemplate(Templateinfo templateEntity) {
        templateEntity.setTemplateId(common.util.StringUtils.getUUID());
        baseMyBatisDAO.insert(SQL_NS+"insert" , templateEntity);

    }

    /**
     * 修改模板表
     *
     * @param templateEntity
     *            模板表
     */
    public void modifyTemplate(Templateinfo templateEntity) {
        baseMyBatisDAO.update(SQL_NS+"update",templateEntity);
    }

    /**
     * 批量删除模板表
     *
     * @param idList
     *            ID列表
     */
    public void deleteTemplateByIds(List<String> idList) {

        baseMyBatisDAO.delete(SQL_NS + "deleteTemplateByIds", idList);

    }

    /**
     * 根据ID查询模板表
     *
     * @param templateId
     * @return templateEntity
     */
    public Templateinfo findTemplateById(String templateId) {
        return baseMyBatisDAO.findUnique(SQL_NS + "findByKey", templateId);
    }

//    /**
//	 * 导入Excel
//	 * @param multipartFile		-- 导入的文件名
//	 * @param templateId			-- 对应数据库中主表的主健(templateId)
//	 * @param tableName			-- 对应数据库中的表名()
//	 */
//	public void importExcel(MultipartFile multipartFile,String templateId,String tableName){
//		//1.创建工作簿
//		/**我们要操作的工作簿(ps:Excel中的表,要导入的模板)*/
//		Workbook workbook = null;
//		InputStream is = null;
//		//System.out.println(multipartFile);
//		try {
//			if (multipartFile != null && !multipartFile.isEmpty()) {
//
//				//得到输入流
//				is = multipartFile.getInputStream();
//
//				//得到工作簿
//				workbook = new XSSFWorkbook(is);
//
//				//得到一张表(ps:可能一个工作簿有多张表在这不考虑)
//				Sheet sheet = workbook.getSheetAt(0);
//
//				//得到头行(ps:标题行)
//				Row headRow = sheet.getRow(0);
//
//				//总共几行
//				int rowsNum = sheet.getLastRowNum();
//
//				//得到列数
//				int colsNum = headRow.getLastCellNum();
//
//				//System.out.println(tableName);
//				if (StringUtils.equals(tableName, "S_COLLECT_DATA_TEMPLATE")) {
//				 insertTaskPlan(sheet,rowsNum,colsNum,templateId);
//				}
//			}
//		} catch (Exception e) {
//			//throw new RuntimeException(e);
//		}finally{
//			try {
//				is.close();
//			} catch (IOException e) {
//			//	logger.error(e.getMessage(), e);
//     			 throw new RuntimeException("关闭文件读取流报错！");
//			}
//		}
//
//	}
//
//	/**
//	 * 将Excel中的数据插入到数据库中
//	 * @param sheet				-- Excel中的表
//	 * @param rowsNum			-- 总行数
//	 * @param colsNum			-- 总列数
//	 * @param templateSid			-- 数据库表中的sid(ps:主健)
//	 */
//	private void insertTaskPlan(Sheet sheet, int rowsNum, int colsNum, String templateId) {
//		String fullName = UserInfoUtils.getFullName();
//
//		//采用循环读写
//		Row row = null;
//		Cell cols = null;
//
//		List<CollectDataTemplateinfo> planList=new ArrayList<CollectDataTemplateinfo>();
//
//		for (int i = 1; i <= rowsNum; i++) {//行
//
//			CollectDataTemplateinfo collectDataTemplateinfo = new CollectDataTemplateinfo();
//			row = sheet.getRow(i);
//			for (int j = 0; j < colsNum; j++) {//列
//				cols = row.getCell(j);
//				String val = getValue(cols);
//				switch (j) {
//				case 1:
//					collectDataTemplateinfo.setDtWorkItem(val);
//					break;
//				case 2:
//					collectDataTemplateinfo.setDtContent(val);
//					break;
//				case 3:
//					collectDataTemplateinfo.setDtDataType(val);
//					break;
//				case 4:
//					collectDataTemplateinfo.setDtTrueValue(val);
//					break;
//				case 5:
//					collectDataTemplateinfo.setDtFalseValue(val);
//					break;
//
//				default:
//					//System.out.println(val);
//					break;
//				}
//
//			}
//			//插入
//			collectDataTemplateinfo.setDtOrder(i);
//			collectDataTemplateinfo.setTemplateId(templateId);
//			collectDataTemplateinfo.setRecordStatus(1);
//			collectDataTemplateinfo.setCreatedBy(fullName);
//			collectDataTemplateinfo.setLastUpdatedBy(fullName);
//			planList.add(collectDataTemplateinfo);
//		}
//		  baseMyBatisDAO.insert( "dailymgt.collectDataTemplate.insertCollectDataTemplates", planList);
//
//	}
//
//	/**
//	 * 获取到单元格的值
//	 * @param cell
//	 * @return
//	 */
//	@SuppressWarnings("deprecation")
//	private String getValue(Cell cell) {
//		if (cell == null) {
//			return StringUtils.EMPTY;
//		}
//		if (Cell.CELL_TYPE_BOOLEAN == cell.getCellType()) {
//			return String.valueOf(cell.getBooleanCellValue());
//		} else if (Cell.CELL_TYPE_NUMERIC == cell.getCellType()) {
//			DecimalFormat df = new DecimalFormat("#.######");
//			return df.format(cell.getNumericCellValue());
//		} else {
//			return cell.getStringCellValue();
//		}
//	}
}

